package com.xian.d7_arrays;


import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;

public class ArraysDemo2 {
    public static void main(String[] args) {
        //目标:自定义数组的排序规则: Comparator比较器对象。
        //1、Arrays的sort方法对于有值特性的数组是默认升序排序
        int[] ages = {34, 12, 42, 23};
        Arrays.sort(ages);
        System.out.println(Arrays.toString(ages));

        //需求:降序排序!
        Integer[] ages1 = {34, 12, 42, 23};
        /**
         * 参数一:被排序的数组必须是引用类型的元素
         * 参数二:匿名内部类对象，代表了一个比较器对象。
         */
        Arrays.sort(ages1, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                /**指定比较规则
                 * 如果认为左边数据大于右边数据返回正整数
                 * 如果认为左边数据小于右边数据返回负整数
                 * 如果认为左边数据等于右边数据返回0
                 */
//                if (o1 > o2){
//                    return 1;
//                }else if (o1<o2){
//                    return -1;
//                }
//                return 0;
                //return o1 - o2;  //默认升序
                return o2 - o1;  //降序
            }
        });
        System.out.println(Arrays.toString(ages1));

        System.out.println("---------------------------");
        Student[] students = new Student[3];
        students[0] = new Student("吴磊",21,173.3);
        students[1] = new Student("谢兴",18,185.6);
        students[2] = new Student("王亮",23,168.6);
        System.out.println(Arrays.toString(students));//没有重写toString方法，打印的是地址

        //Arrays.sort(students);//直接运行崩溃---不知道按哪个排序
        Arrays.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                //自动指定规则
                //return o1.getAge()-o2.getAge();  //按照年龄升序排
                //return o2.getAge()-o1.getAge();  //按照年龄降序排

                //return Double.compare(o1.getHeight(),o2.getHeight()); //比较浮点型可以这样写--升序
                return Double.compare(o2.getHeight(),o1.getHeight()); //比较浮点型可以这样写--降序
            }
        });
        System.out.println(Arrays.toString(students));
    }
}
